package com.quick.android.utils;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 格式检查
 *
 * @author quick
 */
public class CheckUtils {
    /**
     * 判断字符串是否为null或长度为0
     *
     * @param str
     * @return bool
     */
    public static boolean isStrEmpty(String str) {
        if (str == null || str.length() == 0) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 判断数组是否为null或者长度为0
     *
     * @param array
     * @param <T>
     * @return
     */
    public static <T> boolean isArrayEmpty(T[] array) {
        if (getArraySize(array) == 0) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 获取数组的长度
     *
     * @param array
     * @param <T>
     * @return
     */
    public static <T> int getArraySize(T[] array) {
        return array == null ? 0 : array.length;
    }

    /**
     * 判断List是否为null或size = 0
     *
     * @param list
     * @return
     */
    public static <T> boolean isListEmpty(List<T> list) {
        if (getListSize(list) == 0) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 获取List数据的size
     */
    public static <T> int getListSize(List<T> list) {
        return (list == null) ? 0 : list.size();
    }

    /**
     * 判断Map是否为null或size = 0
     *
     * @param map
     * @return
     */
    public static <K, V> boolean isMapEmpty(Map<K, V> map) {
        if (getMapSize(map) == 0) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 获取Map数据的size
     */
    public static <K, V> int getMapSize(Map<K, V> map) {
        return (map == null) ? 0 : map.size();
    }

    /**
     * 判断Set是否为null或size = 0
     *
     * @param set
     * @return
     */
    public static <E> boolean isSetEmpty(Set<E> set) {
        if (getSetSize(set) == 0) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 获取Set数据的size
     */
    public static <E> int getSetSize(Set<E> set) {
        return set == null ? 0 : set.size();

    }

    /**
     * 判断字符串是否为纯数字
     *
     * @param str
     * @return
     */
    public static boolean isNumber(String str) {
        if (isStrEmpty(str)) {
            return false;
        }
        return str.matches("[0-9]+");
    }

    /**
     * 判断字符串是否为纯字母
     *
     * @param str
     * @return
     */
    public static boolean isLetter(String str) {
        if (isStrEmpty(str)) {
            return false;
        }
        return str.matches("[a-zA-Z]+");
    }

    /**
     * 判断是否为邮箱格式
     *
     * @param str
     * @return
     */
    public static boolean isEmailAddress(String str) {
        String match = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
        if (isStrEmpty(str)) {
            return false;
        }
        return str.matches(match);
    }
}
